package com.basic.common.core.service;

import java.util.List;

/**
 * 基础服务业务接口，提供对实体对象的增、删、改、查等基本操作。
 * <p>
 * 该接口为通用接口，通过泛型T实现对不同实体对象的操作，提供了一套基本的数据操作方法。
 *
 * @param <T> 泛型参数，表示操作的实体类型。
 * @author zhaoxy_jn@163.com
 */
public interface IBaseService<T> {

    /**
     * 添加一个实体对象。
     *
     * @param po 待添加的实体对象。
     * @return 添加成功的条数。
     */
    public int insert(T po);

    /**
     * 更新一个实体对象。
     *
     * @param po 待更新的实体对象。
     * @return 更新成功的条数。
     */
    public int update(T po);

    /**
     * 根据ID删除一个实体对象。
     *
     * @param id 待删除实体对象的ID。
     * @return 删除成功的条数。
     */
    public int delete(Object id);

    /**
     * 根据多个ID批量删除实体对象。
     *
     * @param ids 待删除实体对象的ID数组。
     * @return 删除成功的条数。
     */
    public int deleteByIds(Object[] ids);

    /**
     * 根据ID查询一个实体对象。
     *
     * @param id 待查询实体对象的ID。
     * @return 查询到的实体对象。
     */
    public T get(Object id);

    /**
     * 查询实体对象列表。
     *
     * @param po 查询条件对象，可以为空，为空时查询所有。
     * @return 实体对象列表。
     */
    public List<T> getList(T po);
}
